/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package py.una.pol.tesis.ii.wsrest;

import com.google.gson.Gson;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.UriInfo;
import org.apache.log4j.Logger;
import py.una.informatica.dto.Ciudad;
import py.una.informatica.dto.Pais;
import py.una.informatica.dto.Respuesta;

/**
 * REST Web Service
 *
 * @author Leandro
 */
@Path("paises")
public class PaisesResource {

    @Context
    private UriInfo context;

    /**
     * Creates a new instance of PacientesResource
     */
    public PaisesResource() {
    }

    @POST
    public String crearPais(@Context HttpServletRequest req, String paciente) {
        HttpSession session = req.getSession(true);
        Logger.getLogger("").info("Session, : PaisesResource.crearPais" + session.getId());
        return "{cod:0,msj:OK}";
    }

    @DELETE
    @Path("{id}")
    public String deletePais(@Context HttpServletRequest req, @PathParam("id") String id) {
        HttpSession session = req.getSession(true);
        Logger.getLogger("").info("Session, : PaisesResource.deletePais" + session.getId());
        return "";
    }

    @GET
    @Path("{id}")
    public String getPais(@Context HttpServletRequest req, @PathParam("id") String id) {
        HttpSession session = req.getSession(true);
        Logger.getLogger("").info("Session, : PaisesResource.getPais" + session.getId());
        return "";
    }

    @GET
    public String getPaises(@Context HttpServletRequest req) {
        Respuesta respuesta = new Respuesta();
        Pais pais1;
        Pais pais2;
        List<Object> paises = new ArrayList<Object>();
        Gson gson = new Gson();
        String respuestaJson = "";
        try {
            HttpSession session = req.getSession(true);
            Logger.getLogger("").info("Session, : PaisesResource.getPaises" + session.getId());

            pais1 = new Pais(1, "Paraguay");
            pais2 = new Pais(2, "Argentina");

            paises.add(pais1);
            paises.add(pais2);

            respuesta.setEstado("0");
            respuesta.setMensaje("OK");
            respuesta.setDato(paises);

            respuestaJson = gson.toJson(respuesta);
            Logger.getLogger("").info("Respuesta getPaises: " + respuestaJson);
        } catch (Exception e) {
            respuesta.setEstado("-1");
            respuesta.setMensaje("Error al listar los Pacientes");
            respuesta.setDato(null);
            Logger.getLogger("").error("Error en getPaises", e);
        }
        return respuestaJson;
    }

    @GET
    @Path("ciudades/{idPais}")
    public String getCiudadesByPais(@Context HttpServletRequest req, @PathParam("idPais") String idPais) {
        Respuesta respuesta = new Respuesta();
        Ciudad ciudad1;
        Ciudad ciudad2;
        List<Object> ciudades = new ArrayList<Object>();
        Gson gson = new Gson();
        String respuestaJson = "";
        try {
            HttpSession session = req.getSession(true);
            Logger.getLogger("").info("Session, : PaisesResource.getCiudadesByPais" + session.getId());

            Logger.getLogger("").info("Entrada getCiudadesByPais, idPais: " + idPais);
            if (idPais.equals("1")) {
                ciudad1 = new Ciudad(1, "Pilar");
                ciudad2 = new Ciudad(2, "Luque");
            } else {
                ciudad1 = new Ciudad(1, "Corrientes");
                ciudad2 = new Ciudad(2, "Formosa");
            }

            ciudades.add(ciudad1);
            ciudades.add(ciudad2);

            respuesta.setEstado("0");
            respuesta.setMensaje("OK");
            respuesta.setDato(ciudades);

            respuestaJson = gson.toJson(respuesta);
            Logger.getLogger("").info("Respuesta getCiudadesByPais: " + respuestaJson);
        } catch (Exception e) {
            respuesta.setEstado("-1");
            respuesta.setMensaje("Error al listar las Ciudades");
            respuesta.setDato(null);
            Logger.getLogger("").error("Error en getCiudadesByPais", e);
        }
        return respuestaJson;
    }
}
